package com.controller;


import com.bean.User;
import com.bean.UserList;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.Arrays;
import java.util.List;

@RequestMapping("/son")
@Controller
public class SonController {


    /**
     * 普通参数
     * @param name
     * @param age
     */
    @RequestMapping(value = "/son1")
    @ResponseBody
//    获取的参数通过变量传递进来  获取普通参数
//    参数传递是通过 url拼接
    public void son1(String name,String age){
        System.out.println(name);
        System.out.println(age);
    }
    /**
     * POJO
     */
    @RequestMapping(value = "/son2")
    @ResponseBody
    //传入一个User  这种形式的就可以 name=liuweiyi&age=9999
    //剩下的操作Springmvc走动完成，传入值就够了
    public void son2(User user){
        //调用User的方法
        System.out.println(user.toString());
    }

    /**
     *  arr
     */
    @RequestMapping(value = "/son3")
    @ResponseBody
    //传入一个数组  这种形式的就可以 str=111&str=222&str=333
    //剩下的操作Springmvc走动完成，传入值就够了
    //传入数组的名字必须和括号里的名字一样，不一样就会有空指针异常
    public void son3(String [] str){
        //调用User的方法
        for(String i:str){
            System.out.println(i);
        }
     }

    /**
     * list   非JSON
     * @param
     */
    @RequestMapping(value = "/son4")
    @ResponseBody
    //传入一个集合 集合不能直接在括号写入，需要新建一个类，类中建立一个和集合，再把这个类当作参数传入
    //剩下的操作Springmvc走动完成，传入值就够了
    //传入的值的名字一定要和括号里的参数名一致 这里传入集合的名字要和UserList类里面的那个集合名字一样 就是list
    public void son4(UserList userlist){
        //调用User的方法
       System.out.println(userlist.toString());
    }

    /**
     * list   非JSON
     * @param
     */
    @RequestMapping(value = "/son5")
    @ResponseBody
    //传入一个集合 JSON数据的集合可以直接写到括号里面
    //剩下的操作Springmvc走动完成，传入值就够了
    //传入的值的名字一定要和括号里的参数名一致 这里传入集合的泛型要在Bean里创建出来
    public void son5(@RequestBody List<User> userlist){
        //调用User的方法
        System.out.println(userlist);
    }

    /**
     * list   对传递进来的参数进行操作
     * @param
     */
    @RequestMapping(value = "/son6")
    @ResponseBody
    public void son6(@RequestParam(value = "name",required = false,defaultValue = "liuweiyi") String username){
        //调用User的方法
        System.out.println(username);
    }

}
